Methods and systems for determining and displaying animal metrics

ABSTRACT

The invention provides, in one aspect, a computerized method for estimating a weight of an animal. The method includes acquiring an image of an animal and comparing, by at least one computing device, the image to a plurality of models to determine a selected one of the plurality of models that optimally matches a size or shape of the animal, wherein each of the plurality of models has a known weight. The method further includes adjusting, by the at least one computing device, either (i) the image relative to the selected model or (ii) the selected model relative to the image. One or more differential adjustment parameters are determined, by the at least one computing device, based upon the adjustment of the image or model; and a weight of the animal is determined, by the at least one computing device, by adjusting the known weight of the selected model based upon the one or more differential adjustment parameters.

RELATED APPLICATIONS

This application claims the benefit of U.S. Patent Application Ser. No.61/655,303 filed Jun. 4, 2012 entitled “Determining Weight of an AnimalBased on an Image,” U.S. Patent Application Ser. No. 61/751,528 filedJan. 11, 2013, entitled “Method and System for Determining andDisplaying Livestock Metrics,” U.S. Patent Application Ser. No.61/656,057 filed Jun. 6, 2012 entitled “Method and System forDetermining Livestock Metrics,” and U.S. patent application Ser. No.13/832,109 entitled “Systems for Determining Animal Metrics and RelatedDevices and Methods,” and filed this same day herewith. The entirety ofall four applications is incorporated herein by reference.

TECHNICAL FIELD

The present invention relates to livestock management, and moreparticularly, to systems and processes for determining animal metrics(e.g., weight) based upon analysis of one or more images of the animal,and displaying animal metrics (e.g., weight) to a user.

BACKGROUND

Animal weight is an indicator of animal health, development, and yield.Knowledge of its weight is also useful before administering medicine orother forms of treatment. Typically, weight is measured using weightscales, e.g., a weight scale in the floor of a pen. Scales areexpensive, can be inefficient, as they require a time delay to zero, andrequire maintenance to avoid build up or corrosion from farm debris.

SUMMARY

The invention, in one embodiment, features a process for determining ametric (e.g., volume, mass, or weight) and/or characteristic (e.g.,gender or species) of an animal based on analysis of one or more imagesof the animal. By way of overview, the process can include a model withthree coefficients related to height, length, and depth. A library ofanimal models can be used. The library can be created by measuring theweights of known animals, and categorizing the animals into subsets. Thecategories can include sex, size, shape, and/or age. A weight can bedetermined by selecting a model from the library, and adjusting themodel until it “fits” the image of the animal (or vice versa). Theweight of the animal is proportional to the factor by which the model isadjusted relative to the image (or vice versa). The proportionaldifferences between height, length, and depth can be individuallyadjusted for more accurate weight estimation.

In another aspect, the invention provides a computerized method forestimating a weight of an animal. The method includes acquiring an imageof an animal and comparing, by at least one computing device, the imageto a plurality of models to determine a selected one of the plurality ofmodels that optimally matches a size or shape of the animal, whereineach of the plurality of models has a known weight. The method furtherincludes adjusting, by the at least one computing device, either (i) theimage relative to the selected model or (ii) the selected model relativeto the image. One or more differential adjustment parameters aredetermined, by the at least one computing device, based upon theadjustment of the image or model; and a weight of the animal isdetermined, by the at least one computing device, by adjusting the knownweight of the selected model based upon the one or more differentialadjustment parameters. In some embodiments, the image comprises aplurality of images.

In some embodiments, the image includes a plurality of cloud pointsrepresenting the animal in three-dimensions, and each of the pluralityof models includes a plurality of cloud points representing an animal ofa known weight in three-dimensions.

In some embodiments, the method involves determining, by the computingdevice, the selected model by (i) calculating a deviation in cloudpoints between the image and each of the plurality of models, and (ii)selecting the model having the smallest deviation in cloud points. Inrelated embodiments, the method involves determining, by the computingdevice, the model by (i) calculating an iterative closest point (ICP)error between the image and each of the plurality of models; and (ii)selecting the model having the smallest ICP error.

In some embodiments, the method involves adjusting, by the at least onecomputing device, along any of an x-axis, y-axis, or z-axis, at leastone cloud point of (i) the image relative to the selected model or (ii)the selected model relative to the image.

In some embodiments, the method involves determining, by the at leastone computing device, a gender of the animal by comparing a region ofthe image representing a gender of the animal to a corresponding regionof a model having a known gender. In related embodiments, the methodinvolves determining, by the computing device, the selected model basedupon a gender of the animal.

In some embodiments, the method involves determining an additionaldifferential adjustment parameter by comparing one or more cloud pointsin a region of the image to one or more cloud points of a correspondingregion of the selected model, and altering the determined weight of theanimal based upon the additional differential adjustment parameter. Inrelated embodiments, further additional parameter(s) are similarlydetermined for other region(s). In related embodiments, the region ofthe image represents a depth of the animal, and the corresponding regionof the selected model represents a depth of the selected model. In otherrelated embodiments, the region of the image represents one or more bodyparts (e.g., rump, shoulder, back, head, feet, etc.) of the animal, andthe corresponding region of the selected model represents one or morecorresponding body parts (e.g., rump, shoulder, back, head, feet, etc.)of the selected model.

In further related embodiments, the method involves determining anadditional differential adjustment parameter by comparing a thickness(or “depth”) of the image relative to the model, and altering thedetermined weight of the animal based upon the additional differentialadjustment parameter.

In another aspect, the invention provides a computerized method forestimating a weight of an animal. The method includes acquiring an imageof an animal, wherein the image includes a plurality of cloud pointsrepresenting the animal. The image is compared to a plurality of models,by at least one computing device, to determine a selected one of theplurality of models that optimally matches a size and/or a shape of theanimal, wherein each of the plurality of models includes a plurality ofcloud points representing an animal of a known weight. The methodfurther includes adjusting, by the at least one computing device, atleast one of height, length or depth of at least one cloud point of (i)the image relative to the selected model or (ii) the selected modelrelative to the image. One or more differential adjustment parametersare determined, by the at least one computing device, based upon theadjustment of the at least one cloud point; and a weight is determined,by the at least one computing device, for the animal by adjusting theknown weight of the selected model based upon the one or moredifferential adjustment parameters.

In another aspect, the invention provides a data processing system forestimating a weight of an animal. The system includes a data storecoupled to at least one computing device, wherein the data store storesa plurality of models each representing an animal having a known weight.A fitting engine that executes on the at least one computing device,wherein the fitting engine (i) compares an image of an animal to theplurality of models to determine a selected one of the plurality ofmodels that optimally matches a size and/or a shape of the animal, (ii)adjusts either (i) the image relative to the selected model or (ii) theselected model relative to the image, (iii) determines one or moredifferential adjustment parameters based upon the adjustment of theimage or model, and (iv) determines a weight of the animal by adjustingthe known weight of the selected model based upon the one or moredifferential adjustment parameters.

In some embodiments, the image includes a plurality of cloud pointsrepresenting the animal in three-dimensions, and each of the pluralityof models includes a plurality of cloud points representing an animal ofa known weight in three-dimensions.

In some embodiments, the fitting engine determines the selected model bycalculating a deviation in cloud points between the image and each ofthe plurality of models, and selecting the model having the smallestdeviation in cloud points. In related embodiments, the fitting engineadjusts at least one cloud point of (i) the image relative to theselected model or (ii) the selected model relative to the image, alongany of an x-axis, y-axis, or z-axis.

In another aspect, the invention provides a computerized method fordisplaying animal metrics with a graphical user interface (GUI). Themethod includes determining, by at least one computing device, a dailyweight for each of one or more animals for each of a plurality of days;determining, by the at least one computing device, an average dailyweight (or, “interpolated” daily) for each of the one or more animals,wherein the average daily weight for an animal is determined based uponthe plurality of daily weights for the animal; storing, in a data storecoupled to the at least one computing device, the average daily weightfor each of the one or more animals; and rendering, by a remotecomputing device coupled to the data store, a graphical user interface(GUI) window displaying the average daily weight for at least one of theanimals.

In some embodiments, the method involves associating each of the one ormore animals with any one of a plurality of barns. In relatedembodiments, the method involves displaying, in the GUI window, theaverage daily weight for each animal associated with a selected barn,wherein the barn is selected in response to user interaction with theGUI window. In further related embodiments, the method involves (i)associating each of the one or more animals with any one of a pluralityof pens; (ii) associating each of the plurality of pens with any one ofthe plurality of barns; (iii) determining an average pen weight for atleast one of the plurality of pens, wherein average pen weight isdetermined by averaging the daily weight of the one or more animalsassociated with that pen; and (iv) displaying, in GUI window, theaverage pen weight for a selected pen, wherein the pen is selected inresponse to user interaction with the GUI window.

In some embodiments, the method involves displaying, in the GUI window,a plurality of identifiers, wherein each identifier is uniquelyassociated with one of the animals. In some embodiments, each identifiercomprises an RFID number.

In some embodiments, the remote device comprises any of (i) a desktopcomputer, (ii) laptop computer, (iii) tablet computing device, or (iv)other mobile device. In related embodiments, the remote device iscoupled to the data store via any of (i) the Internet, (ii) local-areanetwork (LAN), or (iii) wide-area network (WAN). In further relatedembodiments, the GUI comprises a web page, and the GUI window comprisesa region of the web page.

In some embodiments, the method involves determining an average dailyweight gain (ADG) for at least one of the one or more animals, whereinthe ADG for an animal is based upon a plurality of daily weights forthat animal. In related embodiments, the ADG is determined using abest-fit line method.

In some embodiments, the method involves determining a forecasted weightfor at least one of the one or more animals, wherein the forecastedweight for an animal is based upon the ADG for that animal. In someembodiments, the forecasted weight is determined by multiplying an ADG(e.g., 2 lbs.) for an animal for a current day (e.g., “today”) by anumber of selected days (e.g., 14-days) after the current day, andadding the result to a current weight of the animal (e.g., 200 lbs). Insome embodiments, the number of selected days is programmable orotherwise customizable (e.g., by a user interacting with the GUI orother feature of the remote device, or a systems administrator, etc.).

In some embodiments, the method involves determining a number of animalshaving a forecasted weight within a range of weights. In someembodiments, the method involves displaying the number of animals havinga forecasted weight within the range of weights.

In another aspect, the invention provides a computerized method fordisplaying animal metrics with a graphical user interface (GUI),including determining, by at least one computing device, a daily weightfor each of one or more animals for each of a plurality of days;determining, by the at least one computing device, an average dailyweight gain (ADG) for the one or more animals, wherein the ADG for ananimal is based upon a plurality of daily weights for that animal;determining, by the at least one computing device, a forecasted weightfor the one or more animals, wherein the forecasted weight for an animalis based upon the ADG for that animal; determining, by the at least onecomputing device, a number of animals having a forecasted weight withina range of weights; rendering, by a remote computing device coupled tothe at least one computing device, a graphical user interface (GUI)displaying the number of animals having a forecasted weight within therange of forecasted weights.

In some embodiments, the forecasted weight is determined by multiplyingan ADG for a current day by a number of days after the current day andadding the result to a current weight (e.g., a daily weight) of theanimal.

In some embodiments, the method involves associating each of the one ormore animals with any one of one or more groups. In related embodiments,each group represents a farm. In some embodiments, the method involvesdetermining, with the at least one computing device, a number of animalsassociated with a selected group that have a forecasted weight within aselected weight range.

In some embodiments, the method involves (i) associating one or moresub-groups with any one of the one or more groups, and (ii) associatingeach of the one or more animals with any one of the one or moresub-groups. In related embodiments, each sub-group represents a pen. Insome embodiments, the method involves determining, with the at least onecomputing device, a number of animals associated with a selectedsub-group that have a forecasted weight within a range of weights. Insome embodiments, the method involves displaying, with the GUI, thenumber of animals in the selected sub-group that that have a forecastedweight within the range of weights.

In another aspect, the invention provides a computerized method forpredicting animal metrics, comprising determining, by at least onecomputing device, a daily weight for each of one or more animals foreach of a plurality of days; determining, by the at least one computingdevice, an average daily weight gain (ADG) for the one or more animals,wherein the ADG for an animal is based upon a plurality of daily weightsfor that animal; and determining, by the at least one computing device,a forecasted weight for the one or more animals, wherein the forecastedweight for an animal is based upon the ADG for that animal.

In some embodiments, the forecasted weight is determined by multiplyingan ADG (e.g., for a current day) by a number of days (e.g., 14-days),and adding the result to the daily weight (e.g., 200 lbs).

In another aspect, the invention provides a method for displayinglivestock metrics (e.g., with a graphical user interface, or “GUI”).More specifically, the method can include displaying on a single screen(e.g., a single web page) a farm name and metrics associated with thatfarm (e.g., average weight of the animals in that farm, average dailygain of all animals in that farm, etc.).

In some embodiments, the method involves displaying on the same screen acollapsible list of barns associated with that farm in response to userinput (e.g., clicking on a graphical icon next to the farm name). In arelated aspect of the invention, the method can include sorting theorder in which metrics are displayed in response to user input (e.g.,clicking on a header such as barn name, average weight, ADG, etc.).

Further related aspects of the invention can provide displaying on thesame screen a collapsible list of pens associated with a selected barn(e.g., by clicking on a graphical icon next to the barn name). Thisdisplay can show metrics associated with each pen (e.g., average weightof all animals in each pen, average daily gain of all animals in eachpen, etc.). In a related aspect of the invention, the method can includesorting the order in which metrics are displayed in response to userinput (e.g., clicking on a header such as pen name, average weight, ADG,etc.).

Yet further related aspects of the invention can provide displaying onthe same screen a collapsible list of animals (e.g., identified by RFIDnumbers) associated with a selected pen (e.g., by clicking on agraphical icon next to the pen name). The display can show metricsassociated with each animal (e.g., valid weights, average daily gain,etc.). In a related aspect of the invention, the method can includesorting the order in which metrics are displayed in response to userinput (e.g., by clicking on a header such as RFID, weight, ADG, etc.).

Further related aspects of the invention can provide collapsing (or“compressing”) an expanded list in response to user input (e.g.,clicking on a graphical icon next to the name of an entity (e.g., pen,barn, farm, etc.). In a related aspect of the invention, when a list isexpanded or collapsed, the associated graphical icon changes (e.g., froma right-facing arrow to a down-facing arrow, etc.).

In one aspect of the invention, a method is provided for displaying on asingle screen a number of livestock within user-specified weight rangesacross all barns and pens. In a related aspect of the invention, a usercan specify the weight ranges by inputting minimum and maximum weightsinto a dialogue box.

In one aspect of the invention, a system is provided for markinglivestock (e.g., hogs) that are within a user-defined weight range.Generally, each pen can be equipped with one or more paint sprayers thatcan be positioned near a water spout where the livestock go to drinkwater. If a hog accesses the water spout, the system can determine ifthat livestock's current weight is within a pre-defined weight range forbeing sprayed. If so, then it will be sprayed accordingly.

In one aspect of the invention, a method is provided for configuring oneor more paint sprayers with a graphical user interface. Morespecifically, the method can include setting the weight ranges for thepaint sprayers in response to user input. Weight ranges can be set on aper a farm basis, and all pens within a farm can have their paintsprayer range set to operate across the same weight range.

In a related aspect of the invention, the paint sprayers can beconfigured via the GUI to spray paint individual animals according totheir determined weight range. Thus, for example, hogs in a first weightrange can be painted blue, hogs in a second weight range can be paintedgreen, hogs in a third weight range can be painted red, and so forth.This can, for example, allow a person physically entering a barn or pento quickly recognize weight ranges for individual animals.

BRIEF DESCRIPTION OF THE DRAWINGS

A more complete understanding of the invention can be attained byreference to the drawings, in which:

FIG. 1 depicts a system and environment for determining and displayinganimal metrics (e.g., weight) based upon one or more images of an animalaccording to one implementation of the invention;

FIG. 2 depicts a flowchart showing an exemplary process for determininganimal weight based upon one or more images of an animal according toone implementation of the invention;

FIG. 3A depicts an exemplary three-dimensional (3D) image of an animalaccording to one implementation of the invention;

FIG. 3B depicts an exemplary cropped image of an animal according to oneimplementation of the invention;

FIG. 3C depicts an exemplary fitting model according to oneimplementation of the invention;

FIG. 3D depicts an exemplary height adjustment of a selected modelrelative to a scanned image according to one implementation of theinvention;

FIG. 3E depicts an exemplary length adjustment of a selected modelrelative to a scanned image according to one implementation of theinvention;

FIG. 3F depicts an exemplary fitting model adjusted for height andlength versus a scanned image according to one implementation of theinvention;

FIG. 3G depicts exemplary fine-tuning adjustments for length and depthaccording to one implementation of the invention;

FIG. 3H depicts exemplary fine-tuning adjustments for depth according toone implementation of the invention;

FIG. 3I depicts an exemplary fine tuning adjustment for a rump region ofthe animal according to one implementation of the invention;

FIG. 4 depicts an exemplary process for displaying animal metrics (e.g.,weight) with a graphical user interface (GUI) according to oneimplementation of the invention;

FIG. 5 depicts an x-y axis chart showing exemplary animal daily weightsversus date, with weights on the y-axis and date on the x-axis,according to one implementation of the invention; and

FIGS. 6-13 show exemplary GUI displays according to one implementationof the invention.

FIG. 14 depicts an exemplary GUI display including a weight range tableaccording to one implementation of the invention.

FIG. 15 depicts an exemplary GUI display including a forecast weightrange table according to one implementation of the invention.

DETAILED DESCRIPTION

FIG. 1 depicts a system and environment 100 for determining anddisplaying metrics (e.g., weight, volume, or mass) and/orcharacteristics (e.g., gender or species) of an animal based upon ananalysis of one or more images of the animal according to oneimplementation of the invention.

As shown in the illustrated embodiment, an animal positioning system(e.g., a chute system) 101 positions an animal 50 (e.g., a livestockanimal, such as a pig, hog, cow, or any other kind of animal) such thatan imaging system 110 can capture one or more images 111 of the animal50. A control system 185 can analyze the image(s) 111 to determine anyof a variety of metrics (e.g., weight, size, depth, height, length,thickness, volume, mass, etc.) or other characteristics (e.g., gender,species, etc.) of the animal 50. The metrics and/or othercharacteristics can be displayed to a user device 195 via a graphicaluser interface GUI 196.

In the illustrated embodiment, the chute system 101, control system 185,and remote device 195, or any sub-components thereof, are connected toeach other via one or more data links (e.g., data link 194), such as theInternet, a local-area network (LAN), a wide-area network (WAN), systembus, other type of data link, or any combination thereof.

Chute System

Referring to FIG. 1, the animal positioning system (e.g., a chutesystem) 101 used for positioning the animal (e.g., a livestock animal,such as a pig, a cow, or other animal) 50 for analysis (e.g.,determining and measuring metrics associated with an animal) can be aclosed-ended chute. That is, the chute system 101 can be configured, forexample, to allow the animal (e.g., only one animal) 50 to voluntarilyenter and stand within the chute system for analysis and then exit thechute system (e.g., after being analyzed). For example, the animal cantypically enter and exit the chute system through one (only one)entryway.

As illustrated, in some embodiments, the chute system 101 includes aframe structure that is formed of a generally rectangular frameworkhaving one or more wall structures including a datum structure (e.g., afirst sidewall) 102, a positioning member (e.g., a second sidewall) 104,and an end, control wall 106 disposed at an end of the chute system thatgenerally forms an end boundary between the first sidewall 102 and thesecond sidewall 104. That is, in some aspects, the first sidewall 102 isused as a datum structure along which the animal can be positionedwithin the chute system, and the other components of the chute systemare positioned relative to the datum structure for properly positioningand imaging the animal. Use of such a datum structure in this mannerhelps to more easily and more consistently position the animal withinthe chute system.

A chute entryway 108 is positioned at an end of the chute system 101opposite the control wall 106 so that animals can enter and exit thechute system 101. In some embodiments, the entryway 108 includes a doorconfigured to open manually or automatically (e.g., when an animalapproaches the chute system 101). Alternatively, in some embodiments,the entryway 108 is in the form of an opening (i.e., without a door)through which the animals can enter and exit the chute system 101.

The frame structure can be of various sizes based on the type of animalswith which the chute system will be used. For example, for some types ofpigs, the frame structure can be about 20 inches wide (i.e., theentryway 108 can be about 20 inches wide) and about two feet tall.

The second sidewall 104 typically includes a visual analysis system(e.g., an imaging system) 110 attached thereto for analyzing an animalpositioned within the chute system 101. As discussed herein, the imagingsystem 110 can be configured to capture an image 111 (or multiple images111) of the animal in order to determine metrics (e.g., size or weight)and/or characteristics (e.g., gender or species) of the animal 50.

The second sidewall 104 is typically angled (i.e., angled away from thefirst sidewall 102) to enable the imaging system 110 to better capture aside view of the animal. For example, the second sidewall 104 is angledso that a lower portion of the second sidewall 104 can be positionedclose enough to a lower portion of the first sidewall 102 to properlyposition the animal, for example, by limiting (e.g., restricting) theavailable floor space on which the animal can stand within the chutesystem 101. That is, when an animal walks into the entryway 108, thespacing between the lower portion of the second sidewall 104 and thelower portion of the first sidewall 102 directs or guides (e.g., as aresult of the limited floor space) into a consistent, desired locationthat is preferred for imaging the animal. As discussed below, theconsistent positioning of animals within the chute system 101 by thesecond sidewall 104 can help to enable the imaging system 110 toconsistently capture images of different animals so that the differentanimals can be compared to one another (e.g., for further processing).

The chute system 101 also includes various components and devices withwhich the animal can interact within the chute system 101. For example,the chute system 101 can include one or more of an animal detectionsystem 120, an animal identification system 140, an animal markingsystem 160, and an animal injection system (e.g., an automatic orsemi-automatic injection system) 180. The various systems and deviceswithin the chute system are typically in communication with a controlsystem 185, discussed further below, that can operate the varioussystems to control the chute system 101.

The animal detection system 120 can include any of various systems anddevices that are configured to detect that an animal is present withinthe chute system. For example, in some embodiments, the animal detectionsystem 120 includes a feeder switch 122 that, when an animal enters thechute system and begins to feed (e.g., drink water or consume a foodproduct), the feeder switch 122 can be triggered to send a signal to thecontrol system 185 to indicate that an animal has entered the chutesystem 101 and processing of the animal can begin.

The feeder switch 122 can be configured to activate and send a signal tothe control system 185 as a result of the animal entering the chutesystem and feeding from any of various different sources, includingdrinking water or consuming a liquid or solid food source. Once theanimal detection system 120 indicates to the control system 185 that ananimal is present within the chute system 101, the control system 185can initiate any number of metric measuring routines, such asdetermining the animal's weight using the information obtained by theimaging system 110. Additionally or alternatively, the animal markingsystem 160 or the animal injection system 180 can also be used afterpresence of the animal is detected.

Alternatively or additionally, the animal detection system 120 caninclude any of various other types of devices that can suitably detector determine the presence of an animal and indicate the same to thecontrol system 185. For example, in some embodiments, the animaldetection system 120 includes a proximity sensor, an infrared sensor, amotion detector, photocell, or other suitable devices that, can detectthe presence of an animal within the chute system, and can send adetection signal to the control system 185.

Alternatively or additionally, in some embodiments, the animal detectionsystem 120 can include at least one device configured to view the chutesystem 101 and visually determine when an animal has entered the chute.For example, the imaging system 110 can be used to determine when ananimal has entered the chute.

In some embodiments, a temperature sensor 130 is alternatively oradditionally disposed on the control wall 106 to measure an animal'stemperature (e.g., the animal's internal body temperature). Asillustrated, in some examples, the temperature sensor 130 is arrangedjust below the animal feeder 126 along the control wall 106. Thetemperature sensor 130 can be in the form of any of various knowntemperature measuring devices that are configured to measure an animal'stemperature noninvasively. Examples of such temperature sensors caninclude an infrared-based temperature sensing device.

The imaging system 110 can include any of various imaging devices thatcan suitably capture one or more images 111 of the animal 50 in thechute system 101. In some embodiments, the imaging system 110 caninclude a stereoscopic imaging device configured to capture multipleimages (e.g., in some cases simultaneously) of the animal arrangedwithin the chute system positioned using the first sidewall 102 and thesecond sidewall 104. For example, the imaging system 110 can include oneor more of a stereoscopic video camera, charged-coupled-devices (CCD), aphotodiode array, a complimentary metal-oxide semiconductor (CMOS)optical sensor, a still photographic camera, a digital camera, aconventional two-dimension camera, three-dimensional (3D) camera oranother type of imaging device. In some embodiments, the imaging system110 can utilize a single camera 110, or multiple cameras 110.

In the illustrated embodiment, the image 111 is a three-dimensional (3D)scanned image, although in other embodiments it can be one or more 3D ortwo-dimensional (2D) images. The image 111 can be acquired by scanningone or more pre-existing 2D images (e.g., a .JPEG image), or it can beacquired directly from a scan performed by the imaging system 110. Inthe illustrated embodiment, the image 111 includes x-y-z coordinatesthat represent the animal 50 in three-dimensions. More specifically, theimage 111 includes a point cloud representation of the animal 50 inthree-dimensions (e.g., as shown in FIGS. 3A and 3B, discussed below);the point cloud itself includes a plurality of individual cloud points(e.g., as shown in FIGS. 3A and 3B, discussed below). In otherembodiments, the point cloud can be used to create a wire-frame model ofthe animal 50.

In the illustrated embodiment, an image (e.g., image 111) of an animal(e.g., animal 50) can have a “length,” “height,” and “depth,” based onone or more cloud points (e.g., possibly hundreds or thousands) plottedalong an x-axis, y-axis, and z-axis, respectively, although in otherembodiments it can be otherwise (e.g., in embodiments using 2D images).

In some cases, the imaging system 110 can include one or more of anynumber of filtering or lens controlling mechanisms. For example, anadapted lens can be used to limit the vertical and horizontalfield-of-view of the imaging system, thereby manipulating (e.g.,optimizing) an image area for image processing (e.g., for determiningweight of the animal). The imaging system 110 can also include autopositioning and focusing systems or additional processing systems forperforming image analysis including hardware components (e.g., an imageprocessor) and/or software.

In some embodiments, the imaging system 110 includes a lighting deviceto illuminate the field-of-view of the imaging system 110. The lightingdevice is typically arranged to illuminate a broadside of the animal(e.g., the side view of the animal) when the animal is positioned withinthe chute system 101, for example, while feeding from the animal feeder126. The lighting device can include one or more of any various systemsor devices configured to emit suitable light to illuminate the animal.For example, the lighting device can include a linear array of lights,such as an array of monochromatic light emitting diodes (LEDs) withdiffusers. In some embodiments, the lighting device is alternatively oradditionally disposed on the first sidewall 102, opposite the imagingsystem 110. Such an arrangement of the lighting device opposite theimaging system 110 can enable the lighting device to backlight theanimal so that the imaging system 110 can capture a well-defined,contrasted image of the animal.

In some embodiments, the imaging system 110 can also be used as ananimal detection device (e.g., the animal detection system 120). Forexample, the animal detection system 120 can include the imaging system110, which can be operated (e.g., continuously operated) to monitor thechute system 101. Once an animal is detected, for example, when theimaging system 110 (i.e., in conjunction with the control system 185)detects motion of an object (e.g., an animal) within the chute system, asignal can be sent to the control system 185 that begins processing ofthe animal. For example, in some cases, once motion of an animal isdetected using the imaging system 110, the control system 185 can send asignal to the lighting device to illuminate the animal so that an imagecan be captured and the animal's metrics (e.g., weight) and/orcharacteristics (e.g., gender) can be determined.

Additionally, in some embodiments, the chute system 101 includes animaging calibration system that can be used to set up and calibrate theimaging system 110 for properly capturing images of an animal positionedin the chute system 101. The imaging calibration system can be acomponent of the imaging system 110 or a separate component with whichthe imaging system 110 can interact for calibration. In someembodiments, the calibration system can include a calibration blockmounted on one of the sidewalls that the imaging system view and analyzefor calibration.

The imaging system 110, alone or in combination with the control system185, is typically used to capture one or more images of animals withinthe chute to determine metrics associated with the animal. For example,the imaging system 110 can capture a side view image (e.g., a threedimensional image) of an animal and, based on various algorithmsexecuted by the imaging system 110 and/or the control system 185,estimate (e.g., determine) the weight of the animal.

While the chute systems have been described generally as having oneimaging system 110 that can be used to analyze an animal present in achute system, other configurations are possible. For example, in someembodiments, the chute system includes more than one imaging system 110(e.g., two, three, four, five or more imaging systems) in communicationwith the control system 185 and/or the other imaging systems. In someembodiments, a chute system can include two imaging systems 110, whichcan be positioned on the same side of an animal to capture multiple sideviews of the animal for image processing. Alternatively or additionally,in some embodiments, one or more imaging systems are positionedgenerally above the chute system in order to obtain a top view image ofthe animal. For example, animal metrics and/or characteristics can bedetermined using a combination of one or more side images and one ormore top images of the animal in the chute system. Additionaldescription and details related to this type of image processing andcharacteristic detection can be found below.

With continued reference to FIG. 1, the animal injection system 180typically includes an injection unit 182 connected to one of the chutewalls (e.g., the first sidewall 102). The injection unit 182 can includeany of various devices configured to administer (e.g., inject) asubstance into an animal positioned in the chute system. For example,the injection unit 182 can include a syringe device, a repeatinginjector, a multi-dose syringe, or other systems or devices configuredto selectively inject a fluid into an animal, for example, in responseto a command from the control system 185.

As illustrated, the injection unit 182 can be connected to the chutewall via a connection mechanism (e.g., a robotic arm) 184. Theconnection mechanism 184 can be configured to selectively move towardand away from an animal positioned between the first sidewall 102 andthe second sidewall 104 during an injection procedure.

The animal injection system 180 is typically in communication with thecontrol system 185 to send and receive signals (e.g., injectioninstructions) based on signals received from one or more other systemsof the chute system 101. For example, in some embodiments, when ananimal enters the chute system 101 and the imaging system 110 capturesan image of the animal so that the animal's weight can be estimated(e.g., determined), an injection can be administered (based oninstructions from the control system 185) in response to the determinedweight of the animal. This can be beneficial since certain animals canbe administered certain types of medical injections only if they havegrown to a certain weight (e.g., a threshold weight). For example, ifthe chute system 101 determines that a pig positioned in the chuteweighs at least 101 lbs (e.g., by capturing an image of the pig andprocessing the image as described above), the animal injection system180 can inject the pig with certain substances (e.g., chemicalcastration substances). This can greatly increase the efficiency bywhich animals can be sorted and provided with necessary medications.

In some embodiments, the chute system 101 has an animal identificationsystem 140 arranged along one of the chute walls (e.g., the firstsidewall 102). The animal identification system 140 is configured toidentify a particular animal that has entered the chute system 101. Theanimal identification system 140 can include one or more of varioustypes of devices including scanners, transponder detectors,transceivers, or other types of suitable identification devices. Forexample, in some embodiments, the animal identification system 140includes a radio-frequency identification (RFID) reader that isconfigured to communicate with and identify an RFID tag associated withan animal. For example, one or more animals in a particular area (e.g.,within a pen or barn area) can each have their own RFID tag, which canbe affixed to the animal, for example, affixed to the animal's ear orimplanted under the animal's skin. Alternatively or additionally, insome embodiments, the animal identification system 140 can includevisual identification systems, such as barcode readers (e.g., a readerthat can read a barcode or marking applied to the animal using a printer(e.g., an ink-jet barcode printer or a stain printer), for example,printers manufactured by EBS Ink-Jet Systems USA, Inc of Libertyville,Ill.), configured to identify the animal based on markings applied tothe animal. Alternatively or additionally, the animal identificationsystem 140 can include a variety of other devices to read characters(e.g., numbers or letters (e.g., identification numbers)) printed on ananimal. In some cases, the animal identification system 140 isconfigured to read any of various other types of inks or stains (e.g.,semi-permanent stains (e.g., 20-24 week stains) or permanent stains)that have been applied to an animal (e.g., using a printer).Alternatively, in some embodiments, a user can manually enter theidentity of the animal (e.g., by visual inspection of the animal or anidentification tag on the animal). For example, the animalidentification can be associated with an animal's lot or identificationnumber, age, sex, breed, market classification, domestic informationrelating to growth hormones, and any other pertinent informationrelating to the animal. As discussed above, the animal identificationsystem 140 is typically configured to communicate the animalidentification to the control system 185 for use therein.

The animal marking system 160 can also be disposed along one of thechute walls (e.g., the first sidewall 102 in the example illustrated) sothat an animal within the chute system can be marked for one or variouspurposes. The animal marking system 160 is configured to mark orotherwise tag animals in the chute system with a visual identifier sothat they can be distinguished from one another. For example, in someembodiments, the animal marking system 160 can mark animals withdifferent colored paints or numbers for visual identification. In someembodiments, the animal marking system 160 comprises a device (e.g., abarcode printer) configured to apply a barcode to the animal. In someexamples, the animal marking system 160 comprises a printer (e.g., anink-jet barcode printer or a stain printer), for example, printersmanufactured by EBS Ink-Jet Systems USA, Inc of Libertyville, Ill. Insome cases, the animal marking system 160 can apply a stain (e.g., asemi-permanent stain (e.g., a 20-24 week stain) or a permanent stain) tothe animal.

Such visual identifiers applied by the marking systems for tagging ormarking animals can be used for subsequent managing the animals (e.g.,feeding or sorting the animals). The visual identifiers can be appliedbased upon a determined weight of an animal as determined using theimaging system 110. For example, if an animal's weight is greater than apredetermined threshold weight, the animal marking system 160 can apply(e.g., spray) a predetermined indicator (e.g., a mark of a predeterminedcolored) on the animal to serve as a visual indicator that the animalhas achieved the threshold weight and can be dispositioned accordingly(e.g., to receive certain medical treatments, or proceed to processing(e.g., slaughter)).

In some embodiments, the animal marking system 160 includes a markingdevice (e.g., a painting device or barcode application device, asdescribed above) 162, which can be attached to the chute wall with aconnection mechanism (e.g., a robotic arm) 164. The connection mechanism164 is typically in communication with the control system 185 andconfigured to selectively move toward and away from an animal positionedin the chute system for marking the animal. The connection mechanism 164can include any of various systems or devices configured to move themarking device 162 and can be similar or substantially the same as theconnection mechanism 184 discussed above.

Additional description and details of chute systems can be found inco-pending application Ser. No. 13/832,109, filed on the same day as thesubject application, the contents of which are hereby incorporated byreference in their entirety.

Control System

Generally, the control system 185 controls the subsystems of the chutesystem 101, described above, and executes a fitting engine 193 thatdetermines animal metrics (e.g., weight, volume, mass, shape, size,etc.) and/or characteristics (e.g., gender, species, etc.) based uponone or more images of an animal, as discussed further below. The controlsystem 185 can further store the metrics (e.g., in data store 191) fordisplay to a user (e.g., via GUI 196).

In the illustrated embodiment, the control system 185 can be one or moredesktop computers, servers, laptops, mobile devices, custom computingdevices, other computing devices, or any combination thereof, albeit asadapted in accord with the teachings hereof. An exemplary control system185 is shown in FIG. 1, including a central processing unit (CPU) 186,random access memory (RAM) 187, input/output (I/O) circuitry 188,adapters 189 a-c, a non-transitory storage medium 190, and a fittingengine 192.

The central processing unit 186 is typically a general-purposemicroprocessor or central processing unit and has a set of controlalgorithms, comprising resident program instructions and calibrationsstored in the memory 188 and executed to provide the desired functions.The central processing unit 186 executes functions in accordance withany one of a number of operating systems including proprietary and opensource system solutions. In some embodiments, an application programinterface (API) is preferably executed by the operating system forcomputer applications to make requests of the operating system or othercomputer applications. The description of the central processing unit186 is meant to be illustrative, and not restrictive to the disclosure,and those skilled in the art would appreciate that the disclosure mayalso be implemented on platforms and operating systems other than thosementioned.

In some embodiments, the I/O circuitry 187 includes various connectionports for connecting the animal detection system 120, the imaging system110, the injection system 180, various sensors, the animalidentification system 140, and/or the animal marking system 160. In someembodiments, the animal detection system 120, the imaging system 110,the injection system 180, various sensors, the animal identificationsystem 140, and/or the animal marking system 160 arecommunications-enabled components configured to communicate via thecommunication adapter 189 c.

In the illustrated embodiment, the adapters 189 a-c include a displayadapter 189 a for connecting the control system 185 to a display device,a user interface adapter 189 b for connecting the control system 185 touser input devices, such as a keyboard, a mouse, and/or a microphone,and a communications adapter 189 c for connecting the control system 185to a network (e.g., network 194). In some embodiments, the networkadapter 189 c is a wireless adapter. Other embodiments can have agreater or lesser number of such adapters.

The storage medium 190 is configured to store, access, and modify adatabase (or “data store”) 191, and is preferably configured to store,access, and modify structured or unstructured databases for dataincluding, for example, fitting models 192, relational data, tabulardata, audio/video data, and graphical data.

The illustrated fitting models 192 comprise a library (or, “set”) ofmodels that represent animals with one or more known metrics (e.g.,weight, volume, mass, size, shape, etc.) and/or characteristics (e.g.,gender, species, age, type, etc.). The library of models 192 can becreated, for example, by weighing and categorizing (e.g., by gender,species, etc.) live animals, and acquiring an image (e.g., 3D or 2D) ofeach of those animals (e.g., via imaging system 110 or otherwise). Inthe illustrated embodiment, each fitting model 192 is a scanned image ofan animal having a known weight, and each model 192 represents theanimal with a plurality of cloud points in three-dimensions. In otherembodiments, the cloud points can be used to generate a wire-framemodel. In addition to a known weight, the models 192 can each have otherknown metrics or characteristics as well, such as gender, animalspecies, age, etc.

For example, the plurality of models 192 can include a set offorty-eight models; twenty-four male models and twenty-four femalemodels. Both the male models and the female models can be, individually,broken into three tiers (or “sub-sets”)—eight small, eight medium andeight large. Once an animal (e.g., animal 50) is characterized as, forexample, male and large, the image of the animal (e.g., image 111) canbe compared against the eight models in that tier, instead of the 48models total. For some animals, such as cows, models can be furthersplit into a left side or a right side category because, for example,the left side of a cow can have a larger profile than the right side.

In the illustrated embodiment, each model can have a “length,” “height,”and “depth” based on one or more cloud points (e.g., possibly hundredsor thousands) plotted along an x-axis, y-axis, and z-axis, respectively,although in other embodiments it can be otherwise (e.g., in embodimentsusing 2D models).

In the illustrated embodiment, the models 192 are stored in data store191 on a non-transitory storage medium 190, although in otherembodiments they can be stored otherwise (e.g., in one or more datastores executing on one or more separate computing systems).Additionally, although 3D models are used in the illustrated embodiment,in other embodiments, 2D models can be used.

The illustrated fitting engine 193 executes on the control system 185 todetermine a weight, or other metrics (e.g., size, shape, volume, mass,etc.) and/or characteristics (e.g., gender, type, species, etc.) of theanimal 50. Generally, the fitting engine 193 compares the image 111 toone or more of the models 192 in order to select a model 192 a, from theset of models 192, that optimally matches a size and/or shape of theimaged animal 50. An estimated weight can be determined, for example,based upon a relationship between the image 111 and the selected model192. For example, if the selected model is 5% “larger” than the image,an estimated weight can be determined by increasing the known weight ofthe model by 5%. An exemplary weight estimation process is discussed ingreater detail below with reference to FIG. 2.

Although the above structure and functionality of the control system 185is shown in a single unitary system, it will be appreciated that in someembodiments, such structure and/or functionality can be contained inmultiple devices. For example, there can be multiple processors, fittingengines, data stores, etc., executing on multiple devices, e.g., in adistributed computing environment, such as a “cloud computing”environment or otherwise. Additionally, it will be appreciated that inother embodiments, the functionality of the fitting engine 193 can becontained within one or more other components, e.g., the CPU 186 orotherwise.

Remote Device

Illustrated remote device 195 comprises one or more computing devices(e.g., desktop computer, laptop computer, server computer, tabletdevice, mobile device, etc.) connected to the control system 185 vianetwork 194. The remote device 130 is typically operated by a user toview animal metrics (e.g., weight, etc.) via a graphical user interface(GUI) 196, as discussed further below. For example, the GUI 131 can be aweb browser, custom or generic Windows OS application, or otherapplication designed to display and/or receive input from a user.Although only one remote device 195 is shown here, it will beappreciated that in practice many such devices 195 can be connected tothe control system 185. Further details of the GUI 196 can be foundbelow with reference to FIGS. 4-13.

Weight Estimation Process

FIG. 2 depicts an exemplary process 200 for determining animal metrics(e.g., weight) based upon one or more images of an animal according toone implementation of the invention. Although in the illustratedembodiment the animal is a livestock animal (e.g., animal 50), in otherembodiments, it can be another type of animal (e.g., human, domesticanimal, or wild animal). FIGS. 3A-3I are related to the process 200according to one implementation of the invention, and are discussed inconnection with the individual process steps 205-260. It will beappreciated that FIGS. 3A-3I are shown for exemplary purposes, and arenot necessarily representative of every embodiment of the process 200,or the invention as a whole.

In Step 205, one or more images (e.g., images 111) of an animal (e.g.,animal 50) are acquired by one or more cameras (e.g., imaging system110). See FIG. 3A, discussed below, for an exemplary image. Multiplecameras, or multiple images, can be used, for example, to acquiredifferent angles of the animal. Acquiring different angles of the animalcan, for example, increase the coverage of the animal, which canincrease an overall accuracy of the weight estimation process. Whenmultiple cameras are used, the individual scans (or “images”) can be“registered” and “merged” to form a single representation (e.g., 3Dmodel) of the animal in a manner known in the art of image computation,albeit as modified in accord with the teachings hereof.

FIG. 3A depicts an exemplary 3D image 300 of an animal (e.g., animal 50)according to one implementation of the invention. The image 300 includesa point cloud 310 representation of the animal in three-dimensions,wherein the point cloud includes a plurality of individual cloud points(e.g., cloud point 315).

Returning back to FIG. 2, in step 210, an animal (e.g., animal 50) isidentified in the image (e.g., image 111 or 300) and the image iscropped. See FIG. 3B, discussed below, for an exemplary cropped image.For example, the “leg” and “head” regions of the animal can be cropped,leaving just a “body” region of the animal. This still allows, forexample, the process 200 to work because most of the weight of theanimal is in the body, and the weight of the head and legs are assumedto be a small portion of the overall weight. Although the image iscropped in the illustrated embodiment, in other embodiments it can becropped otherwise, or not at all. For example, in other embodiments, theprocess 200 can use the size of the head and/or legs, e.g., for a moreaccurate weight determination.

FIG. 3B shows an exemplary image 400 of an animal (e.g., animal 50),according to one implementation of the invention, wherein the headregion 420 and leg regions 425,430 have been cropped out, as well as thesurrounding points 431, leaving just a body region 410 of the animal.More specifically, the image 400 includes a plurality of cloud pointsrepresenting the regions 410-431 in three-dimensions, i.e., along x-axis440, y-axis 445, and z-axis 450. By way of example, the unit ofmeasurement along the x, y, and z axis can be meters, although it neednot be. The same unit of measurement can be applied to FIGS. 3D-3I, aswell, although, again it can be otherwise.

Returning back to FIG. 2, in step 220, a fitting model (e.g., fittingmodel 192 a) is selected (e.g., by fitting engine 193 executing oncomputing system 185) from a plurality of models (e.g., models 192)based upon a size, shape, gender, and/or type of the animal (e.g.,animal 50). See FIG. 3C, discussed below, for an exemplary fittingmodel. More specifically the image (e.g., image 111 or 410) is comparedto the plurality of models via a computing device (e.g., computingsystem 185 executing fitting engine 193) to determine a selected one ofthe plurality of models that optimally matches a size or shape of theanimal, wherein each of the plurality of models has a known weight.

Multiple fitting models can be initially selected, and the best fittingmodel among those can be selected before proceeding to the next step230. Such a process can be accomplished by comparing which fittingmodel's size or shape is the closest fit to the captured scan (e.g.,image 111 or cropped image 410). A model can be selected, for example,by calculating the iterative closest point (ICP) error between the imageand each of the fitting models (or a sub-set of the fitting models), andselecting the model with the minimum error. In other embodiments, otheralgorithms can be used instead of, or in addition to, ICP.

More particularly, a model can be selected, for example, by calculatingthe ICP error between one or more cloud points of the image and one ormore cloud points of each of the fitting models (or a sub-set of thefitting models), and selecting the model with the minimum error. Asabove, in other embodiments, other algorithms can be used instead of, orin addition to, ICP.

An exemplary fitting model (e.g., model 192 a) is depicted in FIG. 3C.The model has at least a known weight because the scan was acquired froman animal that was previously weighed (e.g., on a scale). Morespecifically, FIG. 3C depicts a model comprised of plurality of cloudpoints 500 representing an animal in three-dimensions. Although athree-dimensional model is shown here, it will be appreciated that inother embodiment the models can be two-dimensional.

Returning back to FIG. 2, in step 230, the selected model (e.g., model192 a or 500) is adjusted until it matches, or substantially matches,the captured scan (e.g., image 111 or 410). Alternatively, the image canbe adjusted to match, or substantially match, the selected model. In theillustrated embodiment, ICP (or other algorithm) can be used to matchthe scanned image and the selected model, and ICPErr (‘ICP error’)indicates when the best fit has been achieved. See FIGS. 3D-3F,discussed below, for exemplary adjustments.

In some embodiments, step 230 (or other step of process 200, e.g., step250, discussed below) can adjust at least one of height (i.e., in ay-axis direction), length (i.e., in an x-axis direction) or depth (i.e.,in a z-axis direction) of at least one cloud point of (i) the imagerelative to the model or (ii) the model relative to the image. One ormore differential adjustment parameters can be calculated based on theadjustments of the one or more cloud points, as indicated in step 240.

For example, the selected model can be adjusted in both height andlength directions until it matches, or substantially matches, the image.The model is adjusted by a ratio (or “differential adjustmentparameter”) R1 so it is as close to the scan size as possible. Theobjective is to “fit” the model to the image as best as possible in theX-Y direction (minus the depth).

FIG. 3D shows an exemplary height adjustment of a selected model (e.g.,model 192 a or 500) relative to a scanned image (e.g., image 111 or 410)plotted in a 3D graph 600. More specifically, the scanned image isrepresented by rectangular clouds points (e.g., cloud point 610) and theselected model is represented by circular cloud points (e.g., cloudpoint 620). The points are plotted in three-dimensions along an x-axis630, a y-axis 640 and a z-axis 650. To adjust for the height of theanimal (e.g., animal 50), points are selected (e.g., by fitting engine193) around the edges at the top and bottom regions of the scanned imageand the selected model in order to match, or substantially match, themtogether (e.g., via ICP).

FIG. 3E shows an exemplary length adjustment of a selected model (e.g.,model 192 a) relative to a scanned image (e.g., image 111 or 410)plotted in a 3D graph 700. More specifically, the scanned image isrepresented by rectangular clouds points (e.g., cloud point 710) and theselected model is represented by circular cloud points (e.g., cloudpoint 720). The points are plotted in three-dimensions along x-axis 730,y-axis 740 and z-axis 750. In order to adjust for the length of theanimal (e.g., animal 50), points are selected (e.g., by fitting engine193) around the edges at the sides of the scanned image and the fittingmodel in order to match, or substantially match, them together (e.g.,via ICP).

FIG. 3F shows a fitting model (e.g., model 192 a or 500) adjusted forheight and length versus the scanned image (e.g., image 111 or 410)plotted in a 3D graph 800. More specifically, the scanned image isrepresented by rectangular clouds points (e.g., cloud point 810) and theselected model is represented by circular cloud points (e.g., cloudpoint 820). The points are plotted in three-dimensions along an x-axis830, a y-axis 840 and a z-axis 850. As illustrated, the adjusted fittingmodel is fairly close in size to the captured scan

Returning back to FIG. 2, in step 250, one or more fine-tuning steps areperformed to increase an overall accuracy of the weight determinationprocess 200. Generally, the fine-tuning steps include determining one ormore additional differential adjustment parameters by comparing one ormore cloud points in a region of the image (e.g., image 111 or 410) toone or more cloud points of a corresponding region of the selected model(e.g., model 192 a or 500). The determined weight of the animal can beadjusted based upon the one or more additional differential adjustmentparameters. The regions can include, for example, spatial regions of theimage or model (e.g., a top region, bottom region, side region, width,depth, height, length, thickness, etc.) or anatomical regions (e.g.,rump, shoulder, back, legs, head, body, etc.).

Although the fine-tuning steps are shown here before the weightdetermination step 260, it will be appreciated that in some embodiments,the fining tuning steps 260 can be performed after or during the weightdetermination step shown in step 260 below. Thus for example, thefine-tunings steps 250 could be used to adjust an already determinedestimated weight.

In the illustrated embodiment, the fining tuning steps include thefollowing steps, although other embodiments may include a lesser orgreater number of such steps. Indeed, in some embodiments, the weightestimation process 200 can forgo the fine-tuning steps altogether.

Fine-Tune Depth->Ratio-L

This step is to fine-tune the length of the animal. It can, for example,measure the distance from a “back” region of the animal to a“shoulder-leg” region of the animal. This step determines moreaccurately the length of the animal, which can be used to adjust thelength of the selected fitting model (e.g., model 192 a or 500). SeeFIG. 3G, for example. The “regions of interest” (or, simply, “region”)are therefore chosen to compare just the points around the back and theshoulder in this example. Therefore, if this ratio (or “differentialadjustment parameter”) is different than the ratio R1, then we can usethis to make the appropriate adjustment to the length (from head torump) of the animal. As an example, if Ratio-L is less than W1, thefinal determined weight needs to be decreased.

Fine-Tune Depth->Ratio-D

In the illustrated embodiment, the depth adjustment is done in twosteps, although in other embodiments it can be done with a greater orlesser number of steps. The first step is to match both the fittingmodel (e.g., model 192 a or 500) and the scanned image (e.g., image 111or 410), e.g., as shown in FIG. 3G (discussed below), and compare the“center line” of both the model and the image with respect to eachother, e.g., as shown in FIG. 3H (discussed below). If the fitting modelis “thicker” (i.e., has a greater depth) than the scan, then thehalf-line of the scan is “in-front” of the half-line of the model, andhence, has a “negative” value. Conversely, if the model is “thinner”(i.e., has a lesser depth) than the scanned image, then the half-line ofthe scanned image is “behind” the half-line of the model, and hence, hasa “positive” value. These values are then used to further refine theweight.

In FIG. 3G, the scanned image (e.g., image 111 or 410) and the selectedfitting model (e.g., model 192 a or 500) are lined up (e.g., via thefitting engine 193 executing on computing system 185) using the “fat” or“thick” portions of the animal. More specifically, the scanned image isrepresented by rectangular clouds points (e.g., cloud point 901) and theselected model is represented by circular cloud points (e.g., cloudpoint 902). The points are plotted in three-dimensions along an x-axis903, a y-axis 904 and a z-axis 905 of graph 900.

In FIG. 3H, the half-line of the scanned image (e.g., image 111 or 410)and the model (e.g., model 192 a or 500) are compared to each other(e.g., via fitting engine 193 executing on computing device 185) with achart 940 including an x-axis 950 and a z-axis 955. FIG. 3H also happensto show that the animal is bent slightly in this example. The dottedline 905 is the half-line of the fitting model. The black line 906 isthe half-line of the scanned image. A first set of points 910 and asecond set of points 920 are selected points used in calculating therelative degree of “fatness” (or “thickness” or “depth”) at fourdifferent positions of the half-line 906. In other embodiments, a lesseror greater number of points can be used to make the comparison.

The depth of the animal can be fine tuned by the ratio (or “differentialadjustment parameter”) D, which is calculated by comparing how muchthicker the scan is to the “fitting model” (or vice versa) by looking atwhether one or more points at the top of the scan is/are behind or infront of the half-line 905 of the fitting model. For example, if thescan points at the top of the scanned image are behind the half-line 905(i.e., to the left of the dotted line 905) of the fitting model, then itmeans the scanned image is thicker (i.e., has a greater depth) than thefitting model and the final weight needs to be accordingly adjusted.FIG. 3H shows “depth of left bin” and “depth of right bin” (or points attop of the scans) behind the half-line 906 of the scanned image, and aretherefore positive. Therefore, the weight of the animal can then beproperly adjusted.

Fine-Tune Rump->Ratio-R (and/or Other Body Parts)

Individual sections (e.g., rump, shoulder, back, head, leg(s) or otherbody part) of the animal can similarly be compared and furtherrefinements can be made. By doing so, adjustments can be made to thedetermined weight based on individual body parts.

FIG. 3I shows an exemplary comparison of a size of an animal's rumpregion in a scanned image (e.g., image 111 or 410) and a selected model(e.g., model 192 a) according to one implementation of the invention.More specifically, the regions of the scanned image are represented byrectangular clouds points (e.g., cloud point 1001) and the regions ofthe selected model are represented by circular cloud points (e.g., cloudpoint 1002). The points are plotted in three-dimensions along an x-axis1010, a y-axis 1015 and a z-axis 1020 of graph 1000.

As shown, the region of interest is chosen just around the rump area.This ratio (or “differential adjustment parameter”) can be used tofurther adjust the weight of the animal. This is important, for example,since the rump can account for 30 to 40% of the weight of the animal.Although not shown here, many more fine-tuning steps can similarly beadded by defining additional regions of interest.

In the illustrated embodiment, other parts of the body (e.g., shoulder,back, head, leg(s)) can be adjusted for using a similar process as theone described above with respect to the rump.

Returning back to FIG. 2, in Step 260, an estimated weight is determined(e.g., by fitting engine 193 executing on computing system 185) for theanimal (e.g., animal 50). Generally, the weight is determined byadjusting the known weight of the selected model (e.g., 192 a) basedupon the one or more differential adjustment parameters. Morespecifically, since the weight of the selected model is already known,and its relative size to the scanned image (e.g., image 111 or 410) isnow known, the weight of the scanned animal can be derived by applyingR1 and all the “fine-tuning” adjustment ratios in horizontal (L),vertical (H), and/or depth (D) directions as well as any adjustmentratios for each individual body parts.

The following is an example of an algorithm for determining the weightfrom a selected model (e.g., model 192 a or 500).

W1=Weight (“Fitting Model”)

-   -   1) Initial adjustment—The weight difference due to the R1 ratio        can be calculated using the following formulae. This is derived        from a general formula for calculating volume of a cylinder with        slight change to accommodate good results based on        experimentation. Similar type of an equation could be used to        approximate the difference in weight as well.        W2=W1*((R1*R1)+(R1−1))*C-coeff where C-coeff is the coefficient        for amount of change different for different animals and breed.    -   2) Horizontal fine-tune adjustment:        W3=W2*(1+(Ratio-L/R1)*C-coeff-H)) where C-coeff-H is the        coefficient for adjusting the weight change due to the        horizontal difference.    -   3) Vertical fine-tune adjustment:        W4=W3*(1+(Ratio-H/R1)*C-coeff-V)) where C-coeff-V is the        coefficient for adjusting the weight change due to the vertical        difference.    -   4) Depth fine-tune adjustment:        W5=W4*(1+(Ratio-D/R1)*C-coeff-D)) where C-coeff-D is the        coefficient for adjusting the weight change due to the depth        difference.    -   5) Stretch Adjustment        W6=W5+(1+half-line curvature*C-coeff-Curve)) where C-coeff-Curve        is the coefficient for adjusting the weight change due to the        ‘bending’ of the animal.    -   6) Overall adjustment:        W6=W5*C-adjust-total where C-adjust-total is the overall        coefficient adjustment to adjust for breed, region or other such        factors.

Those skilled in the art will appreciate that the C-coefficients abovecan be determined by known regression techniques utilizing training datafrom a plurality of image scans, or otherwise.

Gender Recognition

The gender of an animal (e.g., animal 50) can be determined based uponthe process described above. More specifically, for example, a region ofan image representing the genitalia of the animal can be compared to aregion of a fitting model (e.g., model 192 a) having a known gender(i.e., male or female). If the regions match, or more particularly, ifthe corresponding cloud points match (e.g., as determined via ICP orotherwise), then the animal has the same gender of as the selectedmodel. Alternatively, if the regions do not match (e.g., as determinedby ICP or otherwise), then the animal is presumed to have the oppositegender as the selected model.

Graphical User Interface (GUI)

FIG. 4 depicts an exemplary process 1100 for displaying animal metrics(e.g., weight) with a graphical user interface (GUI) according to oneimplementation of the invention. Those skilled in the art willappreciate this is meant for example purposes only, and in otherembodiments the metrics can be displayed otherwise.

In step 1105, a daily weight is determined (e.g., via process 200) forone or more animals (e.g., animal 50). For example, when the animal goesinto a chute (e.g., chute 101) to drink water, a scan (e.g., image 111)of the animal is captured by an imaging system (e.g., imaging system110). The scan is then checked to make sure it is of good quality. Thisscan is then processed by a weight algorithm (e.g., process 200) toproduce a “scan weight” which is a weight calculated for that scan. Thescan weight sometimes has a value of “−1,” which means that the scan wasof poor quality so that a valid weight could not be calculated.

In any given day, the animal can come into drink water multiple times,and therefore can be scanned multiple times and have multiple estimatedweights determined. In order to get a more accurate daily weight, themultiple scan weights can be average within a given day to generate adaily weight which represents the best estimate of the weight for thatparticular date. An exemplary formula for calculating daily weight canbe:Daily weight=Sum(Scan weights of the same day)/N,

where N is the number of scans with valid weights

Unfortunately, the animal does not always come into drink water everyday. In addition, the weight from a single scan is not necessarilyaccurate since the animal can stretch and bend sideways at any giventime. Therefore, these errors are averaged-out over the course ofmultiple scans. However, the animal can grow (e.g., around 2 to 3 poundsper day) which means weights are typically averaged over a single day,although not over several days, due to their rapid growth.

As shown by way of example in FIG. 5, daily weight 1205 versus date 1210can be charted on an x-y axis 1215, 1220 with weights on the y-axis 1220and date on the x-axis 1215. In this exemplary FIG. 5, the 15^(th) day1230 is the “current” day (or “today”). A best-fit line between thesepoints 1240-1247 can be created. Using this best fit line, the weight ofthe animal can be “interpolated” in any given date, even into thefuture. This method of interpolating the weight can be deemed to be moreaccurate, since it uses many data points in order to produce the weightestimate for the current day. This interpolated weight is the “WEIGHT”of the animal for the current day.

In the illustrated embodiment, to get a “valid” WEIGHT, at least fivedaily weights must be acquired over a fifteen-day period. In otherwords, in order to calculate the weight of the animal, we take data fromthe current day going back fifteen days. If there is less than five“daily weights” within these fifteen days, the current day's WEIGHT isinvalid (e.g., having a value of “−1”). If there are at least five dailyweights over these fifteen days, then the WEIGHT is valid and can, forexample, have a weight anywhere between forty and three-hundred pounds.

Although at least five daily weights must be acquired over a fifteen-dayperiod in the illustrated embodiment to get a “valid” WEIGHT, in otherembodiments it can be otherwise, e.g., a greater or lesser number ofrequired weights (e.g., at least seven daily weights, at least 3 dailyweights, etc.) and/or over a greater or lesser period of time (e.g.,over a forty-five day period, over a ten-day period, etc.).

In step 1110, one or metrics are determined based upon individual dailyweights. For example, Average Daily Gain (or “ADG”) represents how fastthe animal is growing in pounds per day. In the illustrated embodiment,the ADG is the slope of the best fit line, and can be the same line thatis used for interpolating the WEIGHT above.

In the illustrated embodiment, individual animals can be associated withone or more groups and/or subgroups. For example, an animal can beassociated with a group (e.g., a “farm”), and the groups can have one ormore associated sub-groups (e.g., a “barn”). Additionally, thesub-groups (e.g., a “barn”) can have additional associated sub-groups(e.g., a “pen”). In the illustrated embodiment, the following metricsare calculated based on the daily weights of step 1105, although otherembodiments can calculate a lesser or greater number of such metrics.

Average Pen Weight (APW)

In the illustrated embodiment, the Average Pen Weight can be an averageof all the animals within a pen calculated by adding the weights of allthe animals in a pen and dividing it by the number of animals in thatpen with valid weights.

In the illustrated embodiment, if an animal's weight is invalid, it isnot included in the calculation of APW, although in other embodiments itcan be otherwise.

If there are no valid weights in a pen, the APW value for that pen canbe displayed as “---”.

Average Barn Weight (ABW)

In the illustrated embodiment, the Average Barn Weight is the average ofall the animals within a barn calculated by adding the weights of allthe animals in a barn and dividing it by the number of animals in thatbarn with valid weights, although in other embodiments, it may becalculated otherwise.

In the illustrated embodiment, if an animal's weight is invalid, it isnot included in the calculation of ABW, although in other embodiments itcan be otherwise.

Note that ABW is not the same as calculating the average of all the“Average Pen Weights” since the number of animals in each pen will vary.

If there are no valid weights in a barn, the ABW value for that barn canbe displayed as “---”.

Animal Daily Weight Gain (ADG)

In the illustrated embodiment, the Animal Daily Weight Gain is theaverage gain of “Animal Weight” over a 14-day period using a best-fitline method over that period, although in other embodiments it can becalculated otherwise.

In the illustrated embodiment, if an animal's weight is invalid, it isnot included in the calculation of ADG, although in other embodiments itcan be otherwise.

In the illustrated embodiment, an animal's weight needs to be valid onat least different 10 days out of the 14-day period in order for ADG tobe considered valid, although other embodiments may utilize differentrequirements.

If ADG is invalid, then the value for ADG can be displayed as “--.-”.

Pen Daily Weight Gain (PADG)

In the illustrated embodiment, the Pen Daily Weight Gain is the averagegain for all the animals within a pen, which can be calculated by addingall the valid ADG (Average Daily Gain) values of all animals in a penand dividing it by the number of animals with valid ADG values in thatpen.

In the illustrated embodiment, if an animal's ADG value is invalid, itis not included in the calculation of PADG, although in otherembodiments it can be otherwise.

If there are no valid ADG values in a pen, the PADG value for that pencan be displayed as “--.-”.

Barn Daily Weight Gain (BADG)

In the illustrated embodiment, the Barn Daily Weight Gain is the averagegain for all the animals within a barn, which can be calculated byadding all the valid ADG (Average Daily Gain) values of all animals in abarn and dividing it by the number of animals with valid ADG values inthat barn.

In the illustrated embodiment, if an animal's ADG value is invalid, itis not included in the calculation of BADG, although in otherembodiments it can be otherwise.

If there are no valid ADG values in a barn, the BADG value for that barncan be displayed as “--.-”.

Note that BADG is not the same as calculating the average of all the“Pen Daily Weight Gains” since the number of animals in each pen willvary.

In step 1120, the one or more metrics (e.g., average daily weight, ADG,BADG, etc.) are stored in a data store (e.g., data store 191) forretrieval and display to a user (e.g., using remote device 195) via agraphical user interface (e.g., GUI 196) window, as shown in step 1130.In some embodiments, the GUI can be refined in response to user input(step 1140), e.g., as described in FIGS. 6-9 below or otherwise.

Exemplary GUI Displays

FIGS. 6-13 show exemplary GUI displays according to one implementationof the invention.

FIG. 6 shows a GUI display screen according to one implementation of theinvention, with a GUI display window 1301. After a user (e.g., usingremote device 195) signs in to the system, a welcome screen can bepresented. The user can then access the heart of the GUI by clicking onthe Report link which can bring up the following screen 1300 which canshow, in a display window 1301, the farm name 1305, average weight 1310of all animals in the farm 1305, and the average daily gain 1315 of allanimals in the farm 1305, a date the report was updated 1320, and adescription of the 1325 (e.g., when it was created, how many barns arein the farm, etc.). The user can click on the triangle 1306 located tothe left of the farm name 1305 to show an expanded list of the barnswithin that farm, e.g., as shown in FIG. 7.

FIG. 7 depicts an exemplary GUI display 1400, according to oneimplementation of the invention, showing in the same display window1301, an average weight 1410, 1411 of all animals in each barn 1420,1421 and the average daily gain 1430, 1431 of all animals in each barn1420, 1421. The user can also sort the order in which data is displayedby clicking one of the table headers such as Barn Name 1440, Ave Weight1441, or ADG 1442. The user can click on the triangle 1440, 1441 to theleft of any barn name 1420, 1421 to show an expanded list of pens withinthat barn, e.g., as shown in FIG. 8.

FIG. 8 depicts an exemplary display 1500 according to one implementationof the invention, showing in the same display window 1301, an averageweight 1510 of all animals in each pen 1520 and the average daily gain1530 of all animals in each pen 1520. The user can also sort the orderin which data is displayed by clicking one of the table headers such asPen Name, Ave Weight, or ADG. The user can click on the triangle (e.g.,triangle 1521) to the left of any pen name (e.g., Pen Name 1520“10000001”) to show an expanded list of animals (identified by theirRFID numbers) within that pen 1520, as shown in FIG. 9.

FIG. 9 depicts an exemplary display 1600 according to one implementationof the invention, showing in the same display window 1301, a list of allanimals with valid weights 1610 and average daily gain values 1620 ofall animals in a pen 1625. The user can also sort the order in whichdata is displayed by clicking one of the table headers such as RFID,Weight, or ADG.

The user can compress any expanded list by clicking on the arrow (e.g.,arrow 1630) to the left of the name of an entity (e.g., pen, barn, orfarm) with an expanded list. In the illustrated embodiment, the listscan be expanded and compressed in a single display window (e.g., screen1301), such as a single web page, or a single element within a web page,in order to allow for quick and easy user navigation, although otherembodiments may use multiple screens.

FIG. 10 depicts an exemplary weight range table displayed in a GUI 1700showing the number of animals within particular weight ranges accordingto one implementation of the invention. In the illustrated embodiment,users (e.g., using remote device 195) can define specific weight ranges(e.g., 155 to 199 lbs.) to show the number of animals in all pre-definedweight ranges across all pens and barns. This can provide the user witha good overview of weight distributions for the entire operation. In theillustrated embodiment, if an animal's weight is invalid, it is notincluded in the data displayed in the weight range table, although inother embodiments it can be otherwise.

For example, to set weight ranges, the user can click on the “SetWeight-Ranges” link 1720 in the upper right hand corner, which causes toGUI to display a separate display 1800, as shown in exemplary FIG. 11.The GUI 1800 allows, for example, a user to edit or delete an existingweight range or set up a new weight range according to oneimplementation of the invention. In the illustrated embodiment, forexample, a user can create a new weight range by clicking on “Create NewWeight-Range” link 1810.

FIG. 12 shows an exemplary GUI display 1900, according to one embodimentof the invention, wherein a user can enter desired minimum and maximumweight values. In the illustrated embodiment, for example, entering aminimum value in field 1905 and a maximum value in field 1910, andselecting the “Create” link 1920, can create a new weight range.

Paint Sprayer

In the illustrated embodiment, each pen can be equipped with a paintsprayer (e.g., marking device 160), which can be used to paint animals(e.g., animal 50) that are within a user-defined weight range. The paintsprayer can be positioned near the water spout where animals go to drinkwater. If an animal accesses the water spout, the system (e.g., controlsystem 101) can determine if that animal's current weight is within apre-defined weight range for being sprayed.

The weight ranges for the paint sprayer settings can be set on aper-farm basis. All pens within a farm can have their paint sprayerrange settings set to operate across the same weight range.

The weight range settings for paint sprayer control can be changed bythe user via the GUI at any time, e.g., as shown in highlighted portion2010 of the GUI display 2000 in FIG. 13.

Forecasting Animal Weight

FIG. 14 depicts an exemplary GUI 3000 displaying a weight range tableaccording to one implementation of the invention.

As discussed above, users (e.g., using remote device 195) can interactwith the GUI (e.g., GUI 196) to display livestock metrics. In thisexample, the GUI 3000 displays a number of animals (e.g., 0, 1, 2, 3,etc.) within certain weight arranges, organized by pen, barn and farm,although in other embodiments, they may be organized by different groupsand/or sub-groups.

The GUI 3000 can additionally include a “Forecast” link 3010. A user canaccess (e.g., display) predicted livestock metrics (e.g., weight) byusing this link 3010, although other embodiments may provide otherfeatures for generating and/or displaying such predicted metrics. Forexample, forecasted metrics may be automatically generated and/ordisplayed (e.g., by control system 185), or they may generated and/ordisplayed in response to other types of user input.

FIG. 15 depicts an exemplary GUI 3100 displaying a forecast weight rangetable according to one implementation of the invention. This can behelpful, for example, because it can allow a manager (or other user) tosee what the weight range table (e.g., the weight range table of GUI3000) would look like in the future (e.g., a week later, two weekslater, etc.). Such information can help with a variety of managementactivities.

In the illustrated embodiment, a future weight can be predicted (or“forecasted”) for one or more animals. For example, a forecasted weightfor an animal can be determined based upon their growth rate (e.g.,ADG). More specifically, in the illustrated embodiment, the forecastedweight is determined by multiplying an animal's ADG (e.g., the currentday's ADG or most recent ADG) by the number of days ahead to predict(e.g., 7-days, 14-days, 21-days, 28-days, etc.), and adding the resultto the animals current daily weight (e.g., average daily weight, “valid”daily weight, “interpolated” daily weight, etc.). The number of daysahead to predict can be customizable (e.g., by a user, systemsadministrator, etc.). In other embodiments, other methods can be used todetermine the forecasted weight, such as methods that take into accountmultiple ADGs, the age or gender of the animal, or other characteristicsand/or metrics described above.

In this example, shown in FIG. 15, the GUI 3100 displays forecastedweight ranges (e.g., 0-170 lbs.) for a selected number of days in thefuture (e.g., 14-days). The user can select the number of days fromseveral options in this example, including 7-days, 21-days, and 28-days,although these are shown for exemplary purposes only, and otherembodiments may allow for a greater or lesser number of options, or agreater or lesser number of days in the future the system can forecast.

Continuing this example, the GUI 3100 displays a number of animals(e.g., 0, 1, 2, etc.) that are forecasted to be within a certain weightrange (e.g., 0-170 lbs, 171-224 lbs, etc.) for the specified amount ofdays (e.g., 14-days) from the current day. More specifically, thedisplay is organized by pen, and the GUI 3100 displays the number ofanimals within each pen that are predicted to be within a particularweight range. In other displays, the display may be organized by othergroups (e.g., a farm) or sub-groups (e.g., a barn).

It will be appreciated that any of the following methods can be used inconnection with calculating the values described above (e.g., ADG,forecasted weight, etc.):

-   -   (i) best fit line method; (ii) best fit curve method; (iii)        second order curve method; (iv) Random Sample Consensus (RANSAC)        method; (v) ICP; (vi) or process 200, described above.

System Hardware and Software

The invention can be implemented in a compact, handheld imaging device,or in a computing system remote from an imaging device. The inventioncan be implemented in a closed-ended chute including a control wallhaving an animal feeder, an animal presence indicator and an imagingdevice having a field-of-view substantially unobstructed by walls of thechute. The implementation can include a control system communicativelyconnected to the animal presence indicator and the imaging device, andconfigured to control the imaging device based upon informationcommunicated by the animal presence indicator.

The above-described techniques can also be implemented in digital and/oranalog electronic circuitry, or in computer hardware, firmware,software, or in combinations of them. The implementation can be as acomputer program product, i.e., a computer program tangibly embodied ina machine-readable storage device, for execution by, or to control theoperation of, a data processing apparatus, e.g., a programmableprocessor, a computer, and/or multiple computers. A computer program canbe written in any form of computer or programming language, includingsource code, compiled code, interpreted code and/or machine code, andthe computer program can be deployed in any form, including as astand-alone program or as a subroutine, element, or other unit suitablefor use in a computing environment. A computer program can be deployedto be executed on one computer or on multiple computers at one or moresites.

Method steps can be performed by one or more processors executing acomputer program to perform functions of the technology by operating oninput data and/or generating output data. Method steps can also beperformed by, and an apparatus can be implemented as, special purposelogic circuitry, e.g., a FPGA (field programmable gate array), a FPAA(field-programmable analog array), a CPLD (complex programmable logicdevice), a PSoC (Programmable System-on-Chip), ASIP(application-specific instruction-set processor), or an ASIC(application-specific integrated circuit). Subroutines can refer toportions of the computer program and/or the processor/special circuitrythat implement one or more functions.

Processors suitable for the execution of a computer program include, byway of example, both general and special purpose microprocessors, andany one or more processors of any kind of digital or analog computer.Generally, a processor receives instructions and data from a read-onlymemory or a random access memory or both. The essential elements of acomputer are a processor for executing instructions and one or morememory devices for storing instructions and/or data. Memory devices,such as a cache, can be used to temporarily store data. Memory devicescan also be used for long term data storage. Generally, a computer alsoincludes, or is operatively coupled to receive data from or transferdata to, or both, one or more mass storage devices for storing data,e.g., magnetic, magneto-optical disks, or optical disks. A computer canalso be operatively coupled to a communications network in order toreceive instructions and/or data from the network and/or to transferinstructions and/or data to the network. Computer-readable storagedevices suitable for embodying computer program instructions and datainclude all forms of volatile and non-volatile memory, including by wayof example semiconductor memory devices, e.g., DRAM, SRAM, EPROM,EEPROM, and flash memory devices; magnetic disks, e.g., internal harddisks or removable disks; magneto-optical disks; and optical disks,e.g., CD, DVD, HD-DVD, and Blu-ray disks. The processor and the memorycan be supplemented by and/or incorporated in special purpose logiccircuitry.

To provide for interaction with a user, the above described techniquescan be implemented on a computer in communication with a display device,e.g., a CRT (cathode ray tube), plasma, or LCD (liquid crystal display)monitor, for displaying information to the user and a keyboard and apointing device, e.g., a mouse, a trackball, a touchpad, or a motionsensor, by which the user can provide input to the computer (e.g.,interact with a user interface element). Other kinds of devices can beused to provide for interaction with a user as well; for example,feedback provided to the user can be any form of sensory feedback, e.g.,visual feedback, auditory feedback, or tactile feedback; and input fromthe user can be received in any form, including acoustic, speech, and/ortactile input.

The above described techniques can be implemented in a distributedcomputing system that includes a back-end component. The back-endcomponent can, for example, be a data server, a middleware component,and/or an application server. The above described techniques can beimplemented in a distributed computing system that includes a front-endcomponent. The front-end component can, for example, be a clientcomputer having a graphical user interface, a Web browser through whicha user can interact with an example implementation, and/or othergraphical user interfaces for a transmitting device. The above describedtechniques can be implemented in a distributed computing system thatincludes any combination of such back-end, middleware, or front-endcomponents.

The computing system can include clients and servers. A client and aserver are generally remote from each other and typically interactthrough a communication network. The relationship of client and serverarises by virtue of computer programs running on the respectivecomputers and having a client-server relationship to each other.

The components of the computing system can be interconnected by any formor medium of digital or analog data communication (e.g., a communicationnetwork). Examples of communication networks include circuit-based andpacket-based networks. Packet-based networks can include, for example,the Internet, a carrier internet protocol (IP) network (e.g., local areanetwork (LAN), wide area network (WAN), campus area network (CAN),metropolitan area network (MAN), home area network (HAN)), a private IPnetwork, an IP private branch exchange (IPBX), a wireless network (e.g.,radio access network (RAN), 802.11 network, 802.16 network, generalpacket radio service (GPRS) network, HiperLAN), and/or otherpacket-based networks. Circuit-based networks can include, for example,the public switched telephone network (PSTN), a private branch exchange(PBX), a wireless network (e.g., RAN, bluetooth, code-division multipleaccess (CDMA) network, time division multiple access (TDMA) network,global system for mobile communications (GSM) network), and/or othercircuit-based networks.

Devices of the computing system and/or computing devices can include,for example, a computer, a computer with a browser device, a telephone,an IP phone, a mobile device (e.g., cellular phone, personal digitalassistant (PDA) device, laptop computer, electronic mail device), aserver, a rack with one or more processing cards, special purposecircuitry, and/or other communication devices. The browser deviceincludes, for example, a computer (e.g., desktop computer, laptopcomputer) with a world wide web browser (e.g., Microsoft® InternetExplorer® available from Microsoft Corporation, Mozilla® Firefoxavailable from Mozilla Corporation). A mobile computing device includes,for example, a Blackberry®. IP phones include, for example, a Cisco®Unified IP Phone 7985G available from Cisco System, Inc, and/or a Cisco®Unified Wireless Phone 7920 available from Cisco System, Inc.

One skilled in the art will realize the technology can be embodied inother specific forms without departing from the spirit or essentialcharacteristics thereof. The foregoing embodiments are therefore to beconsidered in all respects illustrative rather than limiting of thetechnology described herein. All changes that come within the meaningand range of equivalency of the claims are therefore intended to beembraced therein. The steps of the technology can be performed in adifferent order and still achieve desirable results.

It will be appreciated that the illustrated embodiment and thoseotherwise discussed herein are merely examples of the technology andthat other embodiments, incorporating changes thereto, fall within thescope of the invention.

In view of the foregoing, what we claim is:
 1. A computerized method forestimating a weight of an animal, comprising: acquiring an image of ananimal; comparing, by a computing device, the image to a plurality ofmodels to determine a selected one of the plurality of models thatoptimally matches a size or shape of the animal, wherein each of theplurality of models has a known weight; adjusting, by the computingdevice, either (i) the image relative to the selected model or (ii) theselected model relative to the image, wherein the adjusting occurs forboth height and length; determining, by the computing device, a firstdifferential adjustment parameter based upon the adjustment of the imageor model; tuning, by the computing device, the first differentialadjustment parameter based upon one or more second differentialadjustment parameters, the second differential adjustment parametersrelating to measurement of anatomical features of the animal asrepresented in the image; and determining, by the computing device, aweight of the animal by adjusting the known weight of the selected modelbased upon the tuned differential adjustment parameter.
 2. The method ofclaim 1, wherein the image includes a plurality of cloud pointsrepresenting the animal in three-dimensions, and each of the pluralityof models includes a plurality of cloud points representing an animal ofa known weight in three-dimensions.
 3. The method of claim 2, furthercomprising determining, by the computing device, the selected model by:calculating a deviation in cloud points between the image and each ofthe plurality of models; and selecting the model having the smallestdeviation in cloud points.
 4. The method of claim 2, further comprisingdetermining, by the computing device, the model by: calculating aniterative closest point (ICP) error between the image and each of theplurality of models; and selecting the model having the smallest ICPerror.
 5. The method of claim 2, further comprising adjusting, by thecomputing device, along any of an x-axis, y-axis, or z-axis, at leastone cloud point of (i) the image relative to the selected model or (ii)the selected model relative to the image.
 6. The method of claim 2,further comprising determining, by the at least one computing device, agender of the animal by comparing a region of the image representing agender of the animal to a corresponding region of a model having a knowngender.
 7. The method of claim 2, further comprising determining, by thecomputing device, the selected model based upon a gender of the animal.8. The method of claim 1, wherein one of the second differentialparameters corresponds to a depth of the animal.
 9. The method of claim1, wherein one of the second differential parameters corresponds to abody part of the animal.
 10. The method of claim 1, wherein one of thesecond differential adjustment parameters corresponds to a depth of theimage relative to the model.
 11. The method of claim 1, wherein theimage comprises a plurality of images.
 12. A data processing system forestimating weight of an animal, comprising: a data store coupled to atleast one computing device, wherein the data store stores a plurality ofmodels that each represent an animal having a known weight; a fittingengine that executes on the at least one computing device, wherein thefitting engine (i) compares an image of an animal to the plurality ofmodels to determine a selected one of the plurality of models thatoptimally matches a size and/or a shape of the animal; (ii) adjustseither (i) the image relative to the selected model or (ii) the selectedmodel relative to the image, wherein the adjusting occurs for bothheight and length; (iii) determines a first differential adjustmentparameter based upon the adjustment of the image or model; (iv) tunesthe first differential adjustment parameter based upon one or moresecond differential adjustment parameters, the second differentialadjustment parameters relating to measurement of anatomical features ofthe animal as represented in the image; and (v) determines a weight ofthe animal by adjusting the known weight of the selected model basedupon the tuned differential adjustment parameter.
 13. The system ofclaim 12, wherein the image includes a plurality of cloud pointsrepresenting the animal in three-dimensions, and each of the pluralityof models includes a plurality of cloud points representing an animal ofa known weight in three-dimensions.
 14. The system of claim 13, whereinthe fitting engine determines the selected model by: calculating adeviation in cloud points between the image and each of the plurality ofmodels; and selecting the model having the smallest deviation in cloudpoints.
 15. The system of claim 14, wherein the fitting engine adjustsat least one cloud point of (i) the image relative to the selected modelor (ii) the selected model relative to the image, along any of anx-axis, y-axis, or z-axis.
 16. A computerized method for displayinganimal metrics with a graphical user interface (GUI), comprising:determining, by at least one computing device, a daily weight for eachof one or more animals for each of a plurality of days, wherein thedaily weight is determined by: (i) acquiring an image of an animal; (ii)comparing the image to a plurality of models to determine a selected oneof the plurality of models that optimally matches a size or shape of theanimal, wherein each of the plurality of models has a known weight;(iii) adjusting either (a) the image relative to the selected model or(b) the selected model relative to the image, wherein the adjustingoccurs for both height and length; (iv) determining a first differentialadjustment parameter based upon the adjustment of the image or model;(v) tuning the first differential adjustment parameter based upon one ormore second differential adjustment parameters, the second differentialadjustment parameters relating to measurement of anatomical features ofthe animal as represented in the image; and (vi) determining a weight ofthe animal by adjusting the known weight of the selected model basedupon the one or more tuned differential adjustment parameter;determining, by the at least one computing device, an average dailyweight for each of the one or more animals, wherein the average dailyweight for an animal is determined based upon the plurality of dailyweights for the animal; storing, in a data store coupled to the at leastone computing device, the average daily weight for each of the one ormore animals, rendering, by a remote computing device coupled to thedata store, a graphical user interface (GUI) window displaying theaverage daily weight for at least one of the animals.
 17. The method ofclaim 16, further comprising associating each of the one or more animalswith any one of a plurality of barns.
 18. The method of claim 17,further comprising displaying, in the GUI window, the average dailyweight for each animal associated with a selected barn, wherein the barnis selected in response to user interaction with the GUI window.
 19. Themethod of claim 18, further comprising: (i) associating each of the oneor more animals with any one of a plurality of pens; (ii) associatingeach of the plurality of pens with any one of the plurality of barns;(iii) determining an average pen weight for at least one of theplurality of pens, wherein average pen weight is determined by averagingthe daily weight of the one or more animals associated with that pen;and (iv) displaying, in GUI window, the average pen weight for aselected pen, wherein the pen is selected in response to userinteraction with the GUI window.
 20. The method of claim 16, furthercomprising displaying, in the GUI window, a plurality of identifiers,wherein each identifier is uniquely associated with one of the animals.21. The method of claim 20, wherein each identifier comprises an RFIDnumber.
 22. The method of claim 16, wherein the GUI window comprises aregion of a web page.
 23. The method of claim 16, further comprisingdetermining an average daily weight gain (ADG) for at least one of theone or more animals, wherein the ADG for an animal is based upon aplurality of daily weights for that animal.
 24. The method of 23,further comprising determining a forecasted weight for at least one ofthe one or more animals, wherein the forecasted weight for an animal isbased upon the ADG for that animal.
 25. The method of claim 24, whereinthe forecasted weight is determined by multiplying an ADG for an animalfor a current day by a number of selected days after the current day,and adding the result to the average daily weight.
 26. The method ofclaim 25, further comprising determining a number of animals having aforecasted weight within a range of weights.
 27. The method of claim 25,further comprising displaying the number of animals having a forecastedweight within the range of weights.
 28. The method of claim 16, whereinthe ADG is determined using a best-fit line method.